<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Application binary interface</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Application_binary_interface"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Application_binary_interface rootpage-Application_binary_interface skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Application binary interface</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p class="mw-empty-elt">
</p>
<p>An <b>application binary interface</b> (<b>ABI</b>) is an <a href="Interface_(computing)" title="Interface (computing)">interface</a> exposed by <a href="Software" title="Software">software</a> that is defined for in-<a href="Process_(computing)" title="Process (computing)">process</a> <a href="Machine_code" title="Machine code">machine code</a> access. Often, the exposing software is a <a href="Library_(computing)" title="Library (computing)">library</a>, and the consumer is a <a href="Computer_program" title="Computer program">program</a>.
</p><p>An ABI is at a relatively low-level of <a href="Abstraction_(computer_science)" title="Abstraction (computer science)">abstraction</a>. Interface compatibility depends on the target <a href="Computer_hardware" title="Computer hardware">hardware</a> and the <a href="Software_build" title="Software build">software build</a> <a href="Toolchain" title="Toolchain">toolchain</a>. In contrast, an <a href="Application_programming_interface" class="mw-redirect" title="Application programming interface">application programming interface</a> (API) defines access in <a href="Source_code" title="Source code">source code</a> which is a relatively high-level, hardware-independent, and <a href="Human-readable" class="mw-redirect" title="Human-readable">human-readable</a> format. An API defines interface at the source code level, before compilation, whereas an ABI defines an interface to compiled code.
</p><p>API compatibility is generally the concern for <a href="System_design" class="mw-redirect" title="System design">system design</a> and of the toolchain. However, a <a href="Programmer" title="Programmer">programmer</a> may have to deal with an ABI directly when writing a program in multiple <a href="Programming_language" title="Programming language">languages</a> or when using multiple <a href="Compiler" title="Compiler">compilers</a> for the same language.
</p><p>A complete ABI enables a program that supports an ABI to run without modification on multiple operating systems that provide the ABI. The target system must provide any required libraries (that implement the ABI), and there may be other prerequisites.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Description">Description</h2></div>
<p>Interface aspects covered by an ABI include:
</p>
<ul><li><a href="Processor_(computing)" title="Processor (computing)">Processor</a> <a href="Instruction_set" class="mw-redirect" title="Instruction set">instruction set</a>, with details like register file structure, <a href="Computer_memory" title="Computer memory">memory</a> access types, etc.</li>
<li>Size, layout, and <a href="Data_structure_alignment" title="Data structure alignment">alignment</a> of basic <a href="Data_type" title="Data type">data types</a> that the processor can directly access</li>
<li><a href="Calling_convention" title="Calling convention">Calling convention</a>, which controls how the arguments of <a href="Function_(programming)" class="mw-redirect" title="Function (programming)">functions</a> are passed, and return values retrieved; for example, it controls the following:
<ul><li>How the <a href="Call_stack" title="Call stack">call stack</a> is organized</li>
<li>Whether all parameters are passed on the call stack, or some are passed in registers</li>
<li>Which registers are used for which function parameters</li>
<li>Whether the first function parameter passed on the call stack is pushed first or last</li>
<li>Whether the caller or callee is responsible for cleaning up the call stack after the function call</li></ul></li>
<li><a href="Name_mangling" title="Name mangling">Name mangling</a><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Exception_handling" title="Exception handling">Exception</a> propagation<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup></li>
<li>How an application should make <a href="System_call" title="System call">system calls</a> to the operating system, and if the ABI specifies direct system calls rather than procedure calls to system call <a href="Method_stub" title="Method stub">stubs</a>, the system call numbers</li>
<li>In the case of a complete operating system ABI, the binary format of <a href="Object_file" title="Object file">object files</a>, program libraries, etc.</li></ul>
<p>ABIs include the <a href="Intel_Binary_Compatibility_Standard" title="Intel Binary Compatibility Standard">Intel Binary Compatibility Standard</a> (iBCS)<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> and the <a href="System_V_Release_4" class="mw-redirect" title="System V Release 4">System V Release 4</a> ABIs for various instruction sets.
</p>
<div class="mw-heading mw-heading2"><h2 id="Embedded_ABI">Embedded ABI</h2></div>
<p>An <b>embedded ABI</b> (EABI), used on an <a href="Embedded_operating_system" title="Embedded operating system">embedded operating system</a>, specifies aspects such as <a href="File_format" title="File format">file formats</a>, data types, register usage, <a href="Stack_frame" class="mw-redirect" title="Stack frame">stack frame</a> organization, and function parameter passing of an <a href="Embedded_system" title="Embedded system">embedded</a> software program.
</p><p>Each compiler and <a href="Assembly_language" title="Assembly language">assembler</a> that supports an EABI creates <a href="Object_code" title="Object code">object code</a> that is compatible with code generated by other such compilers and assemblers. This allows developers to link libraries generated by one compiler with object code generated by another.
</p><p>Typically, an EABI is optimized for performance for the limited resources of the target embedded system. Therefore, an EABI may omit abstractions between <a href="User_space_and_kernel_space" title="User space and kernel space">kernel and user space</a> typically found in <a href="Desktop_computer" title="Desktop computer">desktop</a> operating systems. For example, <a href="Dynamic_linking" class="mw-redirect" title="Dynamic linking">dynamic linking</a> may be avoided to allow smaller executables and faster loading, fixed register usage allows more compact stacks and kernel calls, and running the application in privileged mode allows direct access to custom hardware operation without the indirection of calling a device driver.<sup id="cite_ref-ppc-eabi_4-0" class="reference"><a href="#cite_note-ppc-eabi-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> The choice of EABI can affect performance.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p><p>Widely used EABIs include the <a href="PowerPC" title="PowerPC">PowerPC</a>,<sup id="cite_ref-ppc-eabi_4-1" class="reference"><a href="#cite_note-ppc-eabi-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> <a href="Arm_architecture" class="mw-redirect" title="Arm architecture">Arm</a>,<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> and <a href="MIPS_architecture" title="MIPS architecture">MIPS</a> EABIs.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> Specific software implementations like the C library may impose additional limitations to form more concrete ABIs; one example is the GNU OABI and EABI for ARM, both of which are subsets of the ARM EABI.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1266661725">
/* start https://en.wikipedia.org/ */
.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}
/* end https://en.wikipedia.org/ */
</style>
<ul><li><a href="Binary-code_compatibility" title="Binary-code compatibility">Binary-code compatibility</a> – Ability of a computer system to run the same code as another computer system</li>
<li><a href="Bytecode" title="Bytecode">Bytecode</a> – Form of instruction set designed to be run by a software interpreter</li>
<li><a href="Comparison_of_application_virtualization_software" title="Comparison of application virtualization software">Comparison of application virtualization software</a></li>
<li><a href="Debug_symbol" title="Debug symbol">Debug symbol</a> – Type of identifier in computer science</li>
<li><a href="Foreign_function_interface" title="Foreign function interface">Foreign function interface</a> – Interface to call functions from other programming languages</li>
<li><a href="Language_binding" title="Language binding">Language binding</a> – Software library that allows using another library coded in another programming language</li>
<li><a href="Native_(computing)" title="Native (computing)">Native (computing)</a> – Software that operates directly in a given context</li>
<li><a href="Opaque_pointer" title="Opaque pointer">Opaque pointer</a> – Opaque data type which stores a memory address</li>
<li><a href="PowerOpen_Environment" title="PowerOpen Environment">PowerOpen Environment</a> – Open standard by AIM alliance</li>
<li><a href="Symbol_table" title="Symbol table">Symbol table</a> – Data structure used by a language translator such as a compiler or interpreter</li>
<li><a href="SWIG" title="SWIG">SWIG</a> – Open-source programming tool</li>
<li><a href="Visual_C%2B%2B" class="mw-redirect" title="Visual C++">Visual C++ Compatibility</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist reflist-columns references-column-width" style="column-width: 30em;">
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://itanium-cxx-abi.github.io/cxx-abi/">"Itanium C++ ABI"</a>.</cite> (compatible with multiple architectures)</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html">"Itanium C++ ABI: Exception Handling"</a>.</cite> (compatible with multiple architectures)</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.everything2.com/index.pl?node=iBCS">"Intel Binary Compatibility Standard (iBCS)"</a>.</cite></span>
</li>
<li id="cite_note-ppc-eabi-4"><span class="mw-cite-backlink">^ <a href="#cite_ref-ppc-eabi_4-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-ppc-eabi_4-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite class="citation book cs1">"EABI Summary". <a rel="nofollow" class="external text" href="http://www.nxp.com/docs/en/application-note/PPCEABI.pdf"><i>PowerPC Embedded Application Binary Interface: 32-Bit Implementation</i></a> <span class="cs1-format">(PDF)</span> (Version 1.0 ed.). Freescale Semiconductor, Inc. 1 October 1995. pp. <span class="nowrap">28–</span>30.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20070121183413/http://www.linuxdevices.com/news/NS9048137234.html">"Debian ARM accelerates via EABI port"</a>. Linuxdevices.com. 16 October 2016. Archived from <a rel="nofollow" class="external text" href="http://linuxdevices.com/news/NS9048137234.html">the original</a> on 21 January 2007<span class="reference-accessdate">. Retrieved <span class="nowrap">11 October</span> 2007</span>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite id="CITEREFAndrés_Calderón_and_Nelson_Castillo2007" class="citation web cs1">Andrés Calderón and Nelson Castillo (14 March 2007). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20070331193917/http://www.linuxdevices.com/articles/AT5920399313.html">"Why ARM's EABI matters"</a>. Linuxdevices.com. Archived from <a rel="nofollow" class="external text" href="http://linuxdevices.com/articles/AT5920399313.html">the original</a> on 31 March 2007<span class="reference-accessdate">. Retrieved <span class="nowrap">11 October</span> 2007</span>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://developer.arm.com/architectures/system-architectures/software-standards/abi">"ABI for the Arm Architecture"</a>. Developer.arm.com<span class="reference-accessdate">. Retrieved <span class="nowrap">4 February</span> 2020</span>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite id="CITEREFEric_Christopher2003" class="citation mailinglist cs1">Eric Christopher (11 June 2003). <a rel="nofollow" class="external text" href="https://sourceware.org/legacy-ml/binutils/2003-06/msg00436.html">"mips eabi documentation"</a>. <i>binutils@sources.redhat.com</i> (Mailing list)<span class="reference-accessdate">. Retrieved <span class="nowrap">19 June</span> 2020</span>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://wiki.debian.org/ArmEabiPort">"ArmEabiPort"</a>. <i>Debian Wiki</i>. <q>Strictly speaking, both the old and new ARM ABIs are subsets of the ARM EABI specification, but in everyday usage the term "EABI" is used to mean the new one described here and "OABI" or "old-ABI" to mean the old one.</q></cite></span>
</li>
</ol></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B">Policies/Binary Compatibility Issues With C++</a> – a compendium of development rules of thumb for not breaking binary compatibility between library releases</li>
<li><a rel="nofollow" class="external text" href="https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/LowLevelABI/000-Introduction/introduction.html">OS X ABI Function Call Guide</a></li>
<li><a rel="nofollow" class="external text" href="http://wiki.debian.org/ArmEabiPort">Debian ARM EABI port</a></li>
<li><a rel="nofollow" class="external text" href="http://www.uclibc.org/">μClib: Motorola 8/16-bit embedded ABI</a></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20080528070803/http://www.x86-64.org/documentation.html">AMD64 (x86-64) Application Binary Interface</a> at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a> (archived 2008-05-28)</li>
<li><a rel="nofollow" class="external text" href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0036b/index.html">Application Binary Interface (ABI) for the ARM Architecture</a></li>
<li><a rel="nofollow" class="external text" href="https://sourceware.org/legacy-ml/binutils/2003-06/msg00436.html">MIPS EABI documentation</a></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20150114065444/http://www.oracle.com/technetwork/server-storage/solaris10/about-amd64-abi-141142.html">Sun Studio 10 Compilers and the AMD64 ABI</a> at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a> (archived 2015-01-14) – a summary and comparison of some popular ABIs</li>
<li><a rel="nofollow" class="external text" href="https://www.nxp.com/docs/en/reference-manual/MCOREABISM.pdf">M•CORE Applications Binary Interface Standards Manual</a> for the Freescale <a href="M%C2%B7CORE" title="M·CORE">M·CORE</a> processors</li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Application_binary_interface_(ABI)74" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="Application_binary_interface_(ABI)74" style="font-size:114%;margin:0 4em"> (ABI)</div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Parts,<br>conventions</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Data_structure_alignment" title="Data structure alignment">Alignment</a></li>
<li><a href="Calling_convention" title="Calling convention">Calling convention</a></li>
<li><a href="Call_stack" title="Call stack">Call stack</a></li>
<li><a href="Library_(computing)" title="Library (computing)">Library</a>
<ul><li><a href="Static_library" title="Static library">static</a></li></ul></li>
<li><a href="Machine_code" title="Machine code">Machine code</a></li>
<li><a href="Memory_segmentation" title="Memory segmentation">Memory segmentation</a></li>
<li><a href="Name_mangling" title="Name mangling">Name mangling</a></li>
<li><a href="Object_code" title="Object code">Object code</a></li>
<li><a href="Opaque_pointer" title="Opaque pointer">Opaque pointer</a></li>
<li><a href="Position-independent_code" title="Position-independent code">Position-independent code</a></li>
<li><a href="Relocation_(computing)" title="Relocation (computing)">Relocation</a></li>
<li><a href="System_call" title="System call">System call</a></li>
<li><a href="Virtual_method_table" title="Virtual method table">Virtual method table</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Related topics</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Binary-code_compatibility" title="Binary-code compatibility">Binary-code compatibility</a></li>
<li><a href="Foreign_function_interface" title="Foreign function interface">Foreign function interface</a></li>
<li><a href="Language_binding" title="Language binding">Language binding</a></li>
<li><a href="Linker_(computing)" title="Linker (computing)">Linker</a>
<ul><li><a href="Dynamic_linker" title="Dynamic linker">dynamic</a></li></ul></li>
<li><a href="Loader_(computing)" title="Loader (computing)">Loader</a></li>
<li><a href="Year_2038_problem" title="Year 2038 problem">Year 2038 problem</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-13" href="https://en.wikipedia.org/wiki/?title=Application_binary_interface&oldid=1300347152">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>